package cn.codesugar.videocache

import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import cn.codesugar.videocache.databinding.ActivityMainBinding
import com.danikula.videocache.file.CacheDirUtils
import com.danikula.videocache.logger.Logger
import com.danikula.videocache.logger.LoggerFactory.Companion.getLogger
import java.io.IOException
import java.util.*

const val TAG = "视频缓存"

class MainActivity : AppCompatActivity() {

    private val LOG: Logger = getLogger("Pinger")

    private lateinit var binding: ActivityMainBinding
    private val requestPermissionLauncher =
        registerForActivityResult(
            ActivityResultContracts.RequestPermission()
        ) { isGranted: Boolean ->
            if (isGranted) {
                // 已授予许可。继续您的应用程序中的操作或工作流程。
            } else {
                // 向用户说明该功能不可用，因为该功能需要用户拒绝的权限。同时，尊重用户的决定。不要链接到系统设置以说服用户改变他们的决定。
            }
        }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        when {
            ContextCompat.checkSelfPermission(
                this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
            ) == PackageManager.PERMISSION_GRANTED -> {
                // 您可以使用需要权限的 API。
            }
//            shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE) -> {
                //在教育 UI 中，向用户解释为什么您的应用需要此权限才能使特定功能按预期运行。在此 UI 中，包括一个“取消”或“不，谢谢”按钮，允许用户在不授予权限的情况下继续使用您的应用程序。
//                showInContextUI(...)
//            }
            else -> {
                // 您可以直接请求许可。
                // 注册的 ActivityResultCallback 得到这个请求的结果。
                requestPermissionLauncher.launch(
                    Manifest.permission.WRITE_EXTERNAL_STORAGE
                )
            }
        }
        initEvent()
        try {
            throw IOException()
        } catch (e: Exception) {
            LOG.error("测试1", e)
        }
        LOG.warn("测试2时间{}，地址{}", Date(System.currentTimeMillis()), "/sdcard/ecovacs/benebot")
    }

    private fun initEvent() {
        binding.SingleVideo.setOnClickListener {
            startActivity(Intent(this, SingleVideoActivity::class.java))
        }
        binding.MultipleVideos.setOnClickListener {
            startActivity(Intent(this, MultipleVideosActivity::class.java))
        }
        binding.VideoGalleryWithPreCaching.setOnClickListener {
            startActivity(Intent(this, VideoGalleryActivity::class.java))
        }
        binding.SharedCache.setOnClickListener {
            startActivity(Intent(this, SharedCacheActivity::class.java))
        }
        binding.CleanCache.setOnClickListener {
            try {
                CacheDirUtils.cleanVideoCacheDir(this)
            } catch (e: IOException) {
                Log.e(TAG, "Error cleaning cache", e)
                Toast.makeText(this, "Error cleaning cache", Toast.LENGTH_LONG).show()
            }
        }
    }
}